// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package org.achartengine.chart; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RadialGradient; import android.graphics.RectF; import java.util.ArrayList; import java.util.List; import org.achartengine.model.CategorySeries; import org.achartengine.model.Point; import org.achartengine.model.SeriesSelection; import org.achartengine.renderer.DefaultRenderer; import org.achartengine.renderer.SimpleSeriesRenderer; // Referenced classes of package org.achartengine.chart: // RoundChart, PieMapper public class PieChart extends RoundChart { private PieMapper a; public PieChart(CategorySeries categoryseries, DefaultRenderer defaultrenderer) { super(categoryseries, defaultrenderer); a = new PieMapper(); } public void draw(Canvas canvas, int i, int j, int k, int l, Paint paint) { paint.setAntiAlias(mRenderer.isAntialiasing()); paint.setStyle(android.graphics.Paint.Style.FILL); paint.setTextSize(mRenderer.getLabelsTextSize()); int i1 = getLegendSize(mRenderer, l / 5, 0.0F); int j1 = i + k; int k1 = mDataset.getItemCount(); String as[] = new String[k1]; int l1 = 0; double d; double d2; for (d = 0.0D; l1 < k1; d = d2) { d2 = d + mDataset.getValue(l1); as[l1] = mDataset.getCategory(l1); l1++; } int i2; int j2; float f; int k2; boolean flag; float f1; float f2; RectF rectf; ArrayList arraylist; int l2; if (mRenderer.isFitLegend()) { i2 = drawLegend(canvas, mRenderer, as, i, j1, j, k, l, i1, paint, true); } else { i2 = i1; } j2 = (j + l) - i2; drawBackground(mRenderer, canvas, i, j, k, l, paint, false, 0); f = mRenderer.getStartAngle(); k2 = (int)(0.34999999999999998D * (double)Math.min(Math.abs(j1 - i), Math.abs(j2 - j)) * (double)mRenderer.getScale()); if (mCenterX == 0x7fffffff) { mCenterX = (i + j1) / 2; } if (mCenterY == 0x7fffffff) { mCenterY = (j2 + j) / 2; } a.setDimensions(k2, mCenterX, mCenterY); if (!a.areAllSegmentPresent(k1)) { flag = true; } else { flag = false; } if (flag) { a.clearPieSegments(); } f1 = 0.9F * (float)k2; f2 = 1.1F * (float)k2; rectf = new RectF(mCenterX - k2, mCenterY - k2, k2 + mCenterX, k2 + mCenterY); arraylist = new ArrayList(); l2 = 0; while (l2 < k1) { SimpleSeriesRenderer simpleseriesrenderer = mRenderer.getSeriesRendererAt(l2); float f3; float f4; if (simpleseriesrenderer.isGradientEnabled()) { paint.setShader(new RadialGradient(mCenterX, mCenterY, f2, simpleseriesrenderer.getGradientStartColor(), simpleseriesrenderer.getGradientStopColor(), android.graphics.Shader.TileMode.MIRROR)); } else { paint.setColor(simpleseriesrenderer.getColor()); } f3 = (float)mDataset.getValue(l2); f4 = (float)(360D * ((double)f3 / d)); if (simpleseriesrenderer.isHighlighted()) { double d1 = Math.toRadians(90F - (f + f4 / 2.0F)); float f7 = (float)(0.10000000000000001D * (double)k2 * Math.sin(d1)); float f8 = (float)(0.10000000000000001D * (double)k2 * Math.cos(d1)); rectf.offset(f7, f8); canvas.drawArc(rectf, f, f4, true, paint); rectf.offset(-f7, -f8); } else { canvas.drawArc(rectf, f, f4, true, paint); } paint.setColor(simpleseriesrenderer.getColor()); paint.setShader(null); drawLabel(canvas, mDataset.getCategory(l2), mRenderer, arraylist, mCenterX, mCenterY, f1, f2, f, f4, i, j1, mRenderer.getLabelsColor(), paint, true, false); if (mRenderer.isDisplayValues()) { String s = getLabel(mRenderer.getSeriesRendererAt(l2).getChartValuesFormat(), mDataset.getValue(l2)); DefaultRenderer defaultrenderer = mRenderer; int i3 = mCenterX; int j3 = mCenterY; float f5 = f1 / 2.0F; float f6 = f2 / 2.0F; int k3 = mRenderer.getLabelsColor(); drawLabel(canvas, s, defaultrenderer, arraylist, i3, j3, f5, f6, f, f4, i, j1, k3, paint, false, true); } if (flag) { a.addPieSegment(l2, f3, f, f4); } f += f4; l2++; } arraylist.clear(); drawLegend(canvas, mRenderer, as, i, j1, j, k, l, i2, paint, false); drawTitle(canvas, i, j, k, paint); } public SeriesSelection getSeriesAndPointForScreenCoordinate(Point point) { return a.getSeriesAndPointForScreenCoordinate(point); } }